package com.jiawei.队列;

import com.jiawei.链表.LinkedList;
import com.jiawei.链表.单链表.LinkedListSingle;

/**
 * @author : willian fu
 * @version : 1.0
 * 简单链表队列
 */
public class SimpleLinkedListQueue<E> implements Queue<E> {

    private LinkedList<E> queue;

    public SimpleLinkedListQueue() {
        this.queue = new LinkedListSingle<>();
    }

    public SimpleLinkedListQueue(LinkedList<E> queue) {
        this.queue = queue;
    }
    /**
     * 获取队列头部元素，获取后会删除该元素
     *
     * @return 值
     */
    @Override
    public E get() {
        return this.queue.remove(0);
    }

    /**
     * 添加一个元素到队列
     *
     * @param val 值
     * @return 添加结果
     */
    @Override
    public boolean add(E val) {
        this.queue.add(val);
        return true;
    }

    /**
     * 获取队列长度
     *
     * @return 长度
     */
    @Override
    public int length() {
        return this.queue.size();
    }

    @Override
    public void print() {
        this.queue.print();
    }
}
